Linux 通过环境变量使用 Nvidia 显卡(Prime 方案)
经过实际测试,AMD 的核显配上 Nvidia 的独显也是可以使用这个方案的。我的电脑是天选 1 代 2060 版(TUF Gaming 506 IV),当时这个笔记本刚出来的时候,我尝试了大黄蜂方案,但是没有成功,不过这个方案是可行的。
我用的系统是 Debian Testing,所以接下来的包管理命令是 apt
。
让 AMD 核显可用
请先用 uname -r
检查你的 Linux 内核版本,5.x 以后的版本才有 AMD 核显驱动,若内核版本较低请先进行更新。
Debian 10 才有 5.x 及以上版本的 Linux 内核
然后安装 firmware-amd-graphics
。
sudo apt install firmware-amd-graphics
然后禁用一下 nouveau
驱动,理论上接下来安装 Nvidia 驱动会自动禁用 nouveau 驱动,但保险起见你可以手动禁用一下。
安装 Nvidia 显卡驱动
直接使用 apt 源中的驱动即可,不需要去官网下载。
sudo apt install nvidia-driver nvidia-vulkan-common nvidia-vulkan-icd nvidia-vaapi-driver nvidia-vdpau-driver
安装完毕之后需要重启你的电脑。
配置环境变量
现在你已经可以通过在命令前加上
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only
来使用 Nvidia 显卡运行命令,例如:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only glxgears -info
如果你使用的是 Bash,那么你可以在 ~/.bashrc 文件的最后加上一行:
alias optirun='__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only'
重新登录后就可以直接使用 optirun 代替冗长的环境变量。
optirun glxgears -info
你也可以极端一点把这段环境变量添加到 /etc/profile
中,所有应用程序均使用 Nvidia 显卡进行渲染,但是这么做会造成一些渲染错误。
可能遇到的问题
DKMS 模块编译时可能会遇到以下问题:
编译器版本不对
删除 /usr/bin/gcc 和 /usr/bin/g++ 再重新创建需要的编译器软链接,例如:sudo ln -s /usr/bin/gcc-11 /usr/bin/gcc sudo ln -s /usr/bin/g++-11 /usr/bin/g++
源码有错误
这种情况通常是因为 Nvidia 驱动和 Linux 内核没用同步更新。
在进行以下步骤前,建议先卸载 nvidia-driver 以避免其它软件包安装失败。- 如果你使用的是官方内核:
sudo apt install linux-image-amd64 linux-headers-amd64
安装完毕之后需要重启你的电脑,再安装 Nvidia 显卡驱动,应该可以解决绝大部分问题。 - 如果你使用的是第三方内核:
回退显卡驱动版本,然后等待两个星期再进行更新。我用 Liquorix 内核时就会遇到这种情况。
- 如果你使用的是官方内核:
使用 Nvidia 独显连接外部显示器时,可能会遇到选不了更高的分辨率和帧数的问题:
往你的 grub 的 linux 内核参数上添加 nvidia_drm.modeset=1